felixfbecker / PSKubectl

kubectl with the power of the object pipeline
MIT License
61 stars 9 forks source link

Can't run `Update-KubeResource` #47

Closed TylerLeonhardt closed 5 years ago

TylerLeonhardt commented 5 years ago

Tried running Update-KubeResource on my stream but ran into issues. This was on macOS and also with the following service.yml:

apiVersion: v1
kind: Service
metadata:
  name: ud-helloworld-service
spec:
  selector:
    app: ud-helloworld
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 10001
      nodePort: 30000
  type: NodePort
Update-KubeResource -Path ./service.yml
Update-KubeResource : Unable to cast object of type 'System.String' to type 'System.Collections.IDictionary'.
At line:1 char:1
+ Update-KubeResource -Path ./service.yml
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [Update-KubeResource], InvalidCastException
+ FullyQualifiedErrorId : System.InvalidCastException,Kubectl.Cmdlets.UpdateKubeResourceCmdlet
$Error[1].Exception.StackTrace
   at Kubectl.KubeYamlDeserializer.toPSObject(Object value, Type type) in /home/travis/build/felixfbecker/PSKubectl/src/KubeYamlDeserializer.cs:line 88
   at Kubectl.KubeYamlDeserializer.toPSObject(Object value, Type type) in /home/travis/build/felixfbecker/PSKubectl/src/KubeYamlDeserializer.cs:line 95
   at Kubectl.KubeYamlDeserializer.<>c__DisplayClass5_0.<toPSObject>b__0(Object element) in /home/travis/build/felixfbecker/PSKubectl/src/KubeYamlDeserializer.cs:line 72
   at System.Linq.Enumerable.SelectListIterator`2.ToList()
   at Kubectl.KubeYamlDeserializer.toPSObject(Object value, Type type) in /home/travis/build/felixfbecker/PSKubectl/src/KubeYamlDeserializer.cs:line 71
   at Kubectl.KubeYamlDeserializer.toPSObject(Object value, Type type) in /home/travis/build/felixfbecker/PSKubectl/src/KubeYamlDeserializer.cs:line 95
   at Kubectl.KubeYamlDeserializer.toPSObject(Object value, Type type) in /home/travis/build/felixfbecker/PSKubectl/src/KubeYamlDeserializer.cs:line 95
   at Kubectl.KubeYamlDeserializer.Deserialize(String yaml) in /home/travis/build/felixfbecker/PSKubectl/src/KubeYamlDeserializer.cs:line 37
   at Kubectl.Cmdlets.UpdateKubeResourceCmdlet.ProcessRecordAsync(CancellationToken cancellationToken) in /home/travis/build/felixfbecker/PSKubectl/src/Cmdlets/UpdateKubeResourceCmdlet.cs:line 50
   at Kubectl.ThreadAffinitiveSynchronizationContext.RunSynchronized(Func`1 asyncOperation) in /home/travis/build/felixfbecker/PSKubectl/src/ThreadAffinitiveSynchronizationContext.cs:line 151
   at Kubectl.AsyncCmdlet.ProcessRecord() in /home/travis/build/felixfbecker/PSKubectl/src/AsyncCmdlet.cs:line 150
   at System.Management.Automation.Cmdlet.DoProcessRecord()
   at System.Management.Automation.CommandProcessor.ProcessRecord()
felixfbecker commented 5 years ago

Ah, running with -Debug revealed that Int32OrStringV1 is not handled

felixfbecker commented 5 years ago

Fixed in 1dba924ef64b48f27fe1ace607481d7b00618b49